package br.com.maternity.classes.entity;

import br.com.maternity.classes.dao.AtendimentoExameDAO;
import br.com.maternity.classes.dao.PacienteDAO;
import br.com.maternity.classes.dao.ResponsavelDAO;
import java.util.Date;
import java.util.List;

public class Atendimento {

    private Integer id;
    private Date dataAtendimento;
    private Integer idUnidade;
    private Integer prontuarioPaciente;
    private Integer situacao;
    private Integer prioridade;
    private String diagnosticoInicial;
    private Integer cnsClinica;
    private String codigoProcedimento;
    private String caraterInternacao;
    private String condicaoInternacao;
    private String sintomas;
    private String queixasPaciente;
    private Integer paMinima;
    private Integer paMaxima;
    private Integer crmMedico;
    private Date dataTriagem;
    private Date dataConsulta;
    private Paciente _paciente;
    private Responsavel _responsavel;

    public Atendimento() {
    }

    ;

    /**
     * @return the id
     */
    public Integer getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(Integer id) {
        this.id = id;
    }

    /**
     * @return the idUnidade
     */
    public Integer getIdUnidade() {
        return idUnidade;
    }

    /**
     * @param idUnidade the idUnidade to set
     */
    public void setIdUnidade(Integer idUnidade) {
        this.idUnidade = idUnidade;
    }

    /**
     * @return the prontuarioPaciente
     */
    public Integer getProntuarioPaciente() {
        return prontuarioPaciente;
    }

    /**
     * @param prontuarioPaciente the prontuarioPaciente to set
     */
    public void setProntuarioPaciente(Integer prontuarioPaciente) {
        this.prontuarioPaciente = prontuarioPaciente;
    }

    /**
     * @return the prioridade 1 - NORMAL 2 - MÉDIA 3 - ALTA 4 - RETORNO
     */
    public Integer getPrioridade() {
        return prioridade;
    }

    /**
     * @param prioridade the prioridade to set 1 - NORMAL 2 - MÉDIA 3 - ALTA 4 - RETORNO
     */
    public void setPrioridade(Integer prioridade) {
        this.prioridade = prioridade;
    }
    
    public String getPrioridadeDescricao(){
        switch(prioridade){
            case 1:
                return "NORMAL";
            case 2:
                return "MEDIA";
            case 4:
                return "RETORNO";
            default:
                return "ALTA";
        }
    }
    

    /**
     * @return the diagnosticoInicial
     */
    public String getDiagnosticoInicial() {
        return diagnosticoInicial;
    }

    /**
     * @param diagnosticoInicial the diagnosticoInicial to set
     */
    public void setDiagnosticoInicial(String diagnosticoInicial) {
        this.diagnosticoInicial = diagnosticoInicial;
    }

    /**
     * @return the condicaoInternacao
     */
    public String getCondicaoInternacao() {
        return condicaoInternacao;
    }

    /**
     * @param condicaoInternacao the condicaoInternacao to set
     */
    public void setCondicaoInternacao(String condicaoInternacao) {
        this.condicaoInternacao = condicaoInternacao;
    }

    /**
     * @return the sintomas
     */
    public String getSintomas() {
        return sintomas;
    }

    /**
     * @param sintomas the sintomas to set
     */
    public void setSintomas(String sintomas) {
        this.sintomas = sintomas;
    }

    /**
     * @return the queixasPaciente
     */
    public String getQueixasPaciente() {
        return queixasPaciente;
    }

    /**
     * @param queixasPaciente the queixasPaciente to set
     */
    public void setQueixasPaciente(String queixasPaciente) {
        this.queixasPaciente = queixasPaciente;
    }

    /**
     * @return the paMinima
     */
    public Integer getPaMinima() {
        return paMinima;
    }

    /**
     * @param paMinima the paMinima to set
     */
    public void setPaMinima(Integer paMinima) {
        this.paMinima = paMinima;
    }

    /**
     * @return the paMaxima
     */
    public Integer getPaMaxima() {
        return paMaxima;
    }

    /**
     * @param paMaxima the paMaxima to set
     */
    public void setPaMaxima(Integer paMaxima) {
        this.paMaxima = paMaxima;
    }

    /**
     * @return the crmMedico
     */
    public Integer getCrmMedico() {
        return crmMedico;
    }

    /**
     * @param crmMedico the crmMedico to set
     */
    public void setCrmMedico(Integer crmMedico) {
        this.crmMedico = crmMedico;
    }

    /**
     * @return the dataAtendimento
     */
    public Date getDataAtendimento() {
        return dataAtendimento;
    }

    /**
     * @param dataAtendimento the dataAtendimento to set
     */
    public void setDataAtendimento(Date dataAtendimento) {
        this.dataAtendimento = dataAtendimento;
    }

    /**
     * @return the situacao 1 - TRIAGEM 2 - AVALIAÇÃO MÉDICA 3 - OBSTETRIA 9 - FINALIZADO
     */
    public Integer getSituacao() {
        return situacao;
    }

    /**
     * @param situacao the situacao to set 1 - TRIAGEM 2 - AVALIAÇÃO MÉDICA 3 - OBSTETRIA 9 - FINALIZADO
     * FINALIZADO
     */
    public void setSituacao(Integer situacao) {
        this.situacao = situacao;
    }

    /**
     * @return the codigoProcedimento
     */
    public String getCodigoProcedimento() {
        return codigoProcedimento;
    }

    /**
     * @param codigoProcedimento the codigoProcedimento to set
     */
    public void setCodigoProcedimento(String codigoProcedimento) {
        this.codigoProcedimento = codigoProcedimento;
    }

    /**
     * @return the caraterInternacao
     */
    public String getCaraterInternacao() {
        return caraterInternacao;
    }

    /**
     * @param caraterInternacao the caraterInternacao to set
     */
    public void setCaraterInternacao(String caraterInternacao) {
        this.caraterInternacao = caraterInternacao;
    }

    /**
     * @return the dataTriagem
     */
    public Date getDataTriagem() {
        return dataTriagem;
    }

    /**
     * @param dataTriagem the dataTriagem to set
     */
    public void setDataTriagem(Date dataTriagem) {
        this.dataTriagem = dataTriagem;
    }

    /**
     * @return the dataConsulta
     */
    public Date getDataConsulta() {
        return dataConsulta;
    }

    /**
     * @param dataConsulta the dataConsulta to set
     */
    public void setDataConsulta(Date dataConsulta) {
        this.dataConsulta = dataConsulta;
    }

    /**
     * @return the cnsClinica
     */
    public Integer getCnsClinica() {
        return cnsClinica;
    }

    /**
     * @param cnsClinica the cnsClinica to set
     */
    public void setCnsClinica(Integer cnsClinica) {
        this.cnsClinica = cnsClinica;
    }

    public Paciente getPaciente() {
        if (_paciente == null) {
            _paciente = new PacienteDAO().getByProntuario(prontuarioPaciente);
        }

        return _paciente;
    }

    public String getPacienteNome() {
        Paciente p = getPaciente();
        if (p == null) {
            return "Paciente não encontrado";
        } else {
            return p.getNome();
        }
    }
    
    public Responsavel getResponsavel(){
        if(_responsavel == null){
            _responsavel = new ResponsavelDAO().getByAtendimento(id);
        }
        
        return _responsavel;
    }
    
    public String getResponsavelNome(){
        Responsavel r = getResponsavel();
        if(r == null){
            return "";
        }
        else{
            return r.getNome();
        }
    }
    
    public List<AtendimentoExame> getExames(){
        return new AtendimentoExameDAO().selectByAtendimento(id);
    }
    
}
